package com.itheima.chap03;

public abstract class Product /*extends Grandpa*/{
    private String name;
    private double price;

    public Product(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public static PhysicalProduct createPhysicalProduct(String name, double price, double weight){
        return new PhysicalProduct(name, price, weight);
    }

    public static DigitalProduct createDigitalProduct(String name, double price, String secretKey){
        return new DigitalProduct(name, price, secretKey);
    }

    public String displayINfo(){
         return "商品名称：" + name + "，商品价格：" + price + "元";
    }

    public abstract void sendProduct();
    // 方法抽象，类也需要抽象;且抽象不能有方法体即{}

    public void setName(String name) {
        this.name = name;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }
}

/**
 * 什么是继承：
 * 一个 类继承另一个类，就可以访问被继承类的非私有成员
 * 被继承的类叫父类，继承父类的是子类
 * Java中用entends关键字实现继承
 */
/**
 * 继承有什么特点
 * Java中只能单继承，也就是一个人只能有一个爸爸
 * Java中可以多重继承，也就是爸爸还可以有爸爸
 * Java中有一个顶级父类，叫做Object
 */